extends Node#继承基类

func my_function(a,b):#函数中变量查找的优先级是：局部→类成员→全局
	return a + b

static func static_function(a,b):#静态函数无法访问实例和自身的成员和变量
	return a + b

func _ready():#初始化函数，不是构造函数
	var a = 10

	#条件判断
	if 1>2:#如果条件成立，则运行下方代码
		pass
	elif 2>3:#否则如果
		pass
	elif 3>4:
		pass
	else:#否则
		pass

	#三目运算符
	var b = 1 if a > 5 else 2#如果一个表达式成立，则运行左侧的表达式，如果不成立，则运行右边的表达式
	print(b)

	#循环
	while false:#while循环，当表达式为true时进入循环
		print("进入了循环")
	
	#for循环，可以遍历一个范围
	for a in range(3):#从0开始到2
		print(a)

	for a in range(1,3):#从1开始到2
		print(a)

	for a in range(2,8,2):#从2开始，步长为2，到6
		print(a)

	for a in [5,"字符串",Vector2(1,2)]:#遍历数组
		print(a)

	for a in "字符串":#遍历字符串
		print(a)
	#匹配：match，类似switch

	match 1+1:#常量方式，以常量作为条件
		1:
			print("这个表达式的值是1")
		2:
			print("这个表达式的值是2")
		"字符串":
			print("这个表达式的值是字符串")

	match 10:#变量方式，以变量作为条件
		a:
			print("变量是a")
		b:
			print("变量是b")

	match 1+1:#通配符方式，以单个下划线默认条件
		1:
			print("这个表达式的值是1")
		a:
			print("变量是a")
		_:#默认条件
			print("以上条件不成立")

	match 2+3:#绑定模式，有一个默认条件，与通配符模式类似，但会创建一个新变量，获得表达式的值
		1:
			print("这个表达式的值是1")
		a:
			print("变量是a")
		var c:#默认条件
			print("这个表达式的值是：",c)

	match [42,"字符串"]:#数组模式
		[]:
			print("空数组")
		[1,"字符串"]:
			print("匹配数组")
		[var start,_]:
			print("默认参数，数组的第1个下标是：",start)
		[42,..]:
			print("开放式数组，数组超出其它表达式的长度")

	match {"key":"value",1:3}:#字典模式，与数组模式类似
		{}:
			print("空字典")
		{"key":"value",1:2}:
			print("匹配字典")
		{"key":"value",1:var c}:
			print("默认参数，字典键1的值是：",c)
		{"key":"value",..}:
			print("开放式字典，字典超出其它表达式的长度")
	
	match 1+1:#多重模式，可以设置多个条件
		1,2,3:
			print("表达式是1或者2或者3")
		"字符串","字符","字串":
			print("表达式是字符串")